/***************************************************************************************

***************************************************************************************/



/*
*************************************************************************************
* File name: rdopt_coding_state.h
* Function:  Headerfile for storing/restoring coding state
			 (for rd-optimized mode decision)
*
*************************************************************************************
*/


#ifndef _RD_OPT_CS_H_
#define _RD_OPT_CS_H_

#include "global.h"

typedef struct {

	Bitstream            *bitstream;

	// syntax element number and bitcounters
	int                   currSEnr;
	int                   bitcounter[MAX_BITCOUNTER_MB];

	// elements of current macroblock
	int                   mvd[2][BLOCK_MULTIPLE][BLOCK_MULTIPLE][2];
	unsigned long         cbp_bits;

	// contexts for binary arithmetic coding
	MotionInfoContexts   *mot_ctx;
	TextureInfoContexts  *tex_ctx;
	EncodingEnvironment  *encenv;
	int					no_part;
} CSobj;

typedef CSobj* CSptr;

void  delete_coding_state  (CSptr);  //!< delete structure
CSptr create_coding_state  ();       //!< create structure

void  store_coding_state   (CSptr);  //!< store parameters
void  reset_coding_state   (CSptr);  //!< restore parameters

extern CSptr cs_mb,cs_b8,cs_cm;
#ifdef RDO_Q
extern CSptr cs_rdoq;
#endif

#endif

